Adds support for writing Capybara specs

- uses headless browser via phantomjs/poltergeist
- includes an example spec for creating an Agent
- includes a helper for interacting with Select2 boxes

Will Read 8 anos atrás
pai
commit
1789cd59c3
4 arquivos alterados com 62 adições e 1 exclusões
  1. 2 0
      Gemfile
  2. 24 1
      Gemfile.lock
  3. 20 0
      spec/capybara_helper.rb
  4. 16 0
      spec/features/create_an_agent_spec.rb

+ 2 - 0
Gemfile

@@ -121,6 +121,8 @@ group :development do
121 121
   group :test do
122 122
     gem 'coveralls', require: false
123 123
     gem 'delorean'
124
+    gem 'poltergeist'
125
+    gem 'capybara-select2', require: false
124 126
     gem 'pry-rails'
125 127
     gem 'rr'
126 128
     gem 'rspec', '~> 3.2'

+ 24 - 1
Gemfile.lock

@@ -131,7 +131,18 @@ GEM
131 131
     capistrano-rails (1.1.3)
132 132
       capistrano (~> 3.1)
133 133
       capistrano-bundler (~> 1.1)
134
+    capybara (2.6.2)
135
+      addressable
136
+      mime-types (>= 1.16)
137
+      nokogiri (>= 1.3.3)
138
+      rack (>= 1.0.0)
139
+      rack-test (>= 0.5.4)
140
+      xpath (~> 2.0)
141
+    capybara-select2 (1.0.1)
142
+      capybara
143
+      rspec
134 144
     chronic (0.10.2)
145
+    cliver (0.3.2)
135 146
     coderay (1.1.0)
136 147
     coffee-rails (4.1.0)
137 148
       coffee-script (>= 2.2.0)
@@ -358,6 +369,11 @@ GEM
358 369
       omniauth-oauth (~> 1.0)
359 370
     orm_adapter (0.5.0)
360 371
     pg (0.18.3)
372
+    poltergeist (1.8.1)
373
+      capybara (~> 2.1)
374
+      cliver (~> 0.3.1)
375
+      multi_json (~> 1.0)
376
+      websocket-driver (>= 0.2.0)
361 377
     polyglot (0.3.5)
362 378
     protected_attributes (1.0.8)
363 379
       activemodel (>= 4.0.1, < 5.0)
@@ -542,11 +558,16 @@ GEM
542 558
     webmock (1.17.4)
543 559
       addressable (>= 2.2.7)
544 560
       crack (>= 0.3.2)
561
+    websocket-driver (0.6.3)
562
+      websocket-extensions (>= 0.1.0)
563
+    websocket-extensions (0.1.2)
545 564
     wunderground (1.2.0)
546 565
       addressable
547 566
       httparty (> 0.6.0)
548 567
       json (> 1.4.0)
549 568
     xmpp4r (0.5.6)
569
+    xpath (2.0.0)
570
+      nokogiri (~> 1.3)
550 571
 
551 572
 PLATFORMS
552 573
   ruby
@@ -560,6 +581,7 @@ DEPENDENCIES
560 581
   capistrano (~> 3.4.0)
561 582
   capistrano-bundler (~> 1.1.4)
562 583
   capistrano-rails (~> 1.1)
584
+  capybara-select2
563 585
   coffee-rails (~> 4.1.0)
564 586
   coveralls
565 587
   daemons (~> 1.1.9)
@@ -610,6 +632,7 @@ DEPENDENCIES
610 632
   omniauth-twitter
611 633
   omniauth-wunderlist!
612 634
   pg (~> 0.18.3)
635
+  poltergeist
613 636
   protected_attributes (~> 1.0.8)
614 637
   pry-rails
615 638
   quiet_assets
@@ -648,4 +671,4 @@ DEPENDENCIES
648 671
   xmpp4r (~> 0.5.6)
649 672
 
650 673
 BUNDLED WITH
651
-   1.10.6
674
+   1.11.2

+ 20 - 0
spec/capybara_helper.rb

@@ -0,0 +1,20 @@
1
+require 'rails_helper'
2
+require 'capybara/rails'
3
+require 'capybara/poltergeist'
4
+require 'capybara-select2'
5
+Capybara.javascript_driver = :poltergeist
6
+
7
+RSpec.configure do |config|
8
+  config.include Warden::Test::Helpers
9
+  config.before :suite do
10
+    Warden.test_mode!
11
+  end
12
+
13
+  config.after :each do
14
+    Warden.test_reset!
15
+  end
16
+end
17
+
18
+VCR.configure do |config|
19
+  config.ignore_localhost = true
20
+end

+ 16 - 0
spec/features/create_an_agent_spec.rb

@@ -0,0 +1,16 @@
1
+require 'capybara_helper'
2
+
3
+describe "Creating a new agent", js: true do
4
+  it "creates an agent" do
5
+    login_as(users(:bob))
6
+    visit "/"
7
+    page.find("a", text: "Agents").trigger(:mouseover)
8
+    click_on("New Agent")
9
+
10
+    select2("Trigger Agent", from: "Type")
11
+    fill_in(:agent_name, with: "Test Trigger Agent")
12
+    click_on "Save"
13
+
14
+    expect(page).to have_text("Test Trigger Agent")
15
+  end
16
+end